﻿using System.Collections.Generic;
using System;
using System.Linq;
using System.Threading.Tasks;
using 旅游管理系统.Models;

namespace 旅游管理系统.Services
{
    //数据仓库的接口文件
    public interface ITouristRouteRepository
    {
        //希望从数据库获得所欲旅游路线的数据，返回类型是一个数组，可以使用 IEnumerable<> 集合
        //IEnumerable<类型> 函数名称();
        Task<IEnumerable<TouristRoute>> GetTouristRoutesAsync(string keyword, string ratingOperator, int? ratingValue); //通过 Task我们可以把数据的返回值由数据列表变为一个返回的异步操作。在将函数名规范添加Async异步命名
        //获得某个特定的旅游路线,返回的是单独的旅游路线
        Task<TouristRoute> GetTouristRouteAsync(Guid touristRouteId); //touristRouteId 为touristRoute类的Id
        //添加一个新的接口函数
        Task<bool> TouristRouteExistsAsync(Guid touristRouteId);
        Task<IEnumerable<TouristRoutePicture>> GetPicturesByTouristRouteIdAsync(Guid touristRouteId);
        Task<TouristRoutePicture> GetPictureAsync(int pictureId);
        Task<IEnumerable<TouristRoute>> GetTouristRoutesByIDListAsync(IEnumerable<Guid> ids);
        void AddTouristRoute(TouristRoute touristRoute);
        void AddTouristRoutePicture(Guid touristRouteId, TouristRoutePicture touristRoutePicture);
        void DeleteTouristRoute(TouristRoute touristRoute);
        void DeleteTouristRoutes(IEnumerable<TouristRoute> touristRoutes);
        void DeleteTouristRotuePicture(TouristRoutePicture picture);
        //写入数据库函数
        Task<bool> SaveAsync();
    }
}
